package com.lw.controller;

import com.lw.common.IJsonResult;
import com.lw.pojo.Bgm;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

@Controller
@RequestMapping("/video")
public class VideoController {

    @PostMapping("queryBgmApi")
    @ResponseBody
    public Bgm queryBgmApi(String bgmId){
        //查询数据库，获取bgm信息

        //封装bgm下载路径

        return new Bgm();
    }


    @GetMapping("/showAddBgm")
    public String showAddBgm(){
        return "video/addBgm"; //跳转到video/addBgm.jsp
    }

//    @Value("${file.base.path:/temp/user/bgms}") //使用<bean>配置或者@Value都行
    private String fileBasePath;//文件上传路径

    public void setFileBasePath(String fileBasePath){
        this.fileBasePath = fileBasePath;
    }

    @PostMapping("/addBgm")
    @ResponseBody
    public IJsonResult addBgm(Bgm bgm) {
        return IJsonResult.ok();
    }


    /**
     * 背景音乐上传
     * @param userId
     * @param files
     * @return
     * @throws Exception
     */
    @PostMapping("/bgmUpload")
    @ResponseBody
    public IJsonResult bgmUpload(String userId, @RequestParam("file") MultipartFile[] files) throws Exception{
        String fileSpace = fileBasePath+ File.separator+"bgms"+File.separator;

        String filePath = null;

        if(files!=null&&files.length>0){
            //cc.mp3
            String fileName = files[0].getOriginalFilename();
            filePath = fileSpace+fileName;//文件保存的路径

            File faceFile = new File(filePath);
            if(!faceFile.getParentFile().exists()){//目录不存在则创建
                faceFile.getParentFile().mkdirs();
            }
            InputStream is = files[0].getInputStream();
            FileOutputStream fos = new FileOutputStream(filePath);

            IOUtils.copy(is,fos);

            //下面这段代码等同于上面IOUitls那一句
//            byte[] buffer = new byte[4096];
//            int n =0;
//            while((n=is.read(buffer))!=-1){
//                fos.write(buffer,0,n);
//            }

            is.close();
            fos.flush();//网络环境需要清空管道缓存，如果是本地这步可以省略
            fos.close();
        }

        return IJsonResult.ok(filePath);
    }
}
